草庐IT

Java HotSpot 枚举开销

全部标签

c# - C# 中的大型标志枚举

大家好,有一个简短的问题,我似乎找不到任何关于......我正在做一个需要带有大量标志(最多40个)的标志枚举的项目,我真的不想为每个枚举值输入确切的掩码:publicenumMyEnumeration:ulong{Flag1=1,Flag2=2,Flag3=4,Flag4=8,Flag5=16,//...Flag16=65536,Flag17=65536*2,Flag18=65536*4,Flag19=65536*8,//...Flag32=65536*65536,Flag33=65536*65536*2//rightabouthereIstarttogetreallypissedo

c# - 我如何分块可枚举?

我需要一个优雅的方法,它接受一个可枚举对象,并获取可枚举对象的可枚举对象,其中每个元素的数量都相同,但最后一个:publicstaticIEnumerable>Chunk(thisIEnumerablevalues,Int32chunkSize){//TODO:codethatchunks}这是我试过的:publicstaticIEnumerable>Chunk(thisIEnumerablevalues,Int32chunkSize){varcount=values.Count();varnumberOfFullChunks=count/chunkSize;varlastChunkS

c# - 降低字符串时解析枚举

我有一个非常有趣的问题,我不确定您是否可以使用这种方法来解决。我有一些字符串,都是小写的。我们就称它为商业法。现在,我有一个枚举类型,其值为BusinessLaw。我想做的是将businesslaw字符串转换为BusinessLaw枚举类型。通常我会这样做:return(EnumType)(Enum.Parse(typeof(EnumType),value));但是,当存在一些大小写差异时,这是不可能的。你会如何解决这个问题?还是天生无法解决? 最佳答案 您可以使用theoverloadofEnum.Parse最后一个参数表示区分大

c# - int 是枚举的支持类型

根据thispostint是enum的支持类型。当我检查.NET的源代码时System.Enum抽象类继承自System.ValueType抽象类。但是当我检查System.Int32结构它继承自接口(interface)而不是System.ValueType.相反,当我反编译mscorlib.dll并检查Int32结构时,它说该结构的基类型为System.ValueType.但仍然检查反编译的源代码,我看不到任何关于System.ValueType的信息。这让我觉得struct关键字使声明成为auto-Sytem.ValueType,Microsoft也在这个reference中表示

c# - 在带有空格的 ComboBox 中显示枚举

我有一个枚举,例如:enumMyEnum{My_Value_1,My_Value_2}与:comboBox1.DataSource=Enum.GetValues(typeof(MyEnum));但现在我的问题是:如何将“_”替换为“”,使其变为带空格而不是下划线的项目?而且数据绑定(bind)对象仍然作品 最佳答案 如果您有权访问Framework3.5,您可以执行以下操作:Enum.GetValues(typeof(MyEnum)).Cast().Select(e=>new{Value=e,Text=e.ToString().Re

c# - 枚举和减法运算符

有谁知道(也许:从什么时候开始)-=运算符在enum值上受支持?今天我正在愉快地编码,因为某种原因,我写了这个来从标志enum中排除一个值:flags-=FlagsEnum.Value1;在重新阅读和评估我的代码后,我很惊讶它编译后确实有效。将语句写成flags=flags-FlagsEnum.Value1但是不编译。到目前为止,我在文档和互联网上找不到任何内容。此外,不支持其他运算符(当然除了位运算符):+=(包括标志)、*=(Pascal中的交集)工作。这是C#编译器内置的语法糖吗?如果是这样,他们选择不包括其他运营商的原因是什么?一个简单的代码示例:usingSystem;usi

c# - 我如何在 MVC3 中的 Razor 页面上使用枚举?

我声明了一个枚举:publicenumHeightTypes{Tall,Short}现在我想像这样在我的Razor页面上使用它:@if(Model.Meta.Height==HeightTypes.Tall)但是有一个问题,因为我得到一个错误。有什么方法可以告诉razor页面关于我的枚举的信息吗? 最佳答案 您的枚举声明有误(删除结尾的;):publicenumHeightTypes{Short=0,Tall=1}那么下面的测试应该有效:@if(Model.Meta.Height==HeightTypes.Tall){}您只需确保您

c# - 静态构造函数会导致性能开销?

最近在dotnetpearls.com上阅读一篇文章here说静态ctors会受到大量的性能影响。不明白为什么? 最佳答案 我认为在大多数用例中“大量”是一种夸大其词。由于beforefieldinitflag的存在/不存在,拥有静态构造函数(即使它什么也不做)会影响类型初始化时间.当你有一个静态构造函数时,对时间有更严格的保证。对于大多数代码,我认为这没有太大区别-但如果您是紧密循环并访问类的静态成员,则可能会有所不同。就我个人而言,我不会太担心它-如果您怀疑它与您的真实应用程序相关,那么测试它而不是猜测。微基准测试很可能会夸大此

c# - 枚举应该放在单独的文件中还是放在另一个类中?

我目前有一个包含以下枚举的类文件:usingSystem;namespaceHelper{publicenumProcessType{Word=0,Adobe=1,}}或者我应该在使用它的类中包含枚举吗?我注意到Microsoft为DockStyle创建了一个新的类文件:usingSystem;usingSystem.ComponentModel;usingSystem.Drawing.Design;namespaceSystem.Windows.Forms{publicenumDockStyle{None=0,Top=1,Bottom=2,Left=3,Right=4,.Fill=5

c# - 检查枚举是否有等于字符串的字段

我有一个枚举publicenumFileExtentions{mp3,mpeg}我有一个FileInfo,我想检查它的扩展名是否在前一个枚举中。我希望我能做一个FileExtensions.Any(e=>e.ToString().Equals(file.Extension));但是那太棒了。有什么想法吗? 最佳答案 Any…Equals背后的原因是什么?您是否忽略了Contains?boolresult=Enum.GetNames(typeof(FileExtensions)).Contains("mp3");